3.6.9.18 hvfma-半精度ベクトル積和演算の基本動作
MAB内で半精度ベクトル積和演算FMA (x*y+z)を行う。
code:文法
hvfma <src_x> <src_y> <src_z> <dst_0> <dst_1>..
第 1 入力の<src_x>、第 2 入力の<src_y>、および第 3 入力の<src_z>は読み出し元PEオペランドである。
基本動作において<src_x>および<src_y>は通常の半精度の値で、アクセス語長は長語である。
基本動作において<src_z>は通常の単精度の値で、アクセス語長は 2 長語である。
<dst_0> [<dst_1>..]は書き込み先PEオペランドである。
演算結果は複数のPEメモリに同時に書き込むことができるが、以下効果では簡単のため単一の書き込み先としてdstを指定した例を示している。
基本動作において演算結果は通常の単精度であり、書き込みのアクセス語長は 2 長語である。
code:効果.py
for cycle = 0:4
forall chip,l2b,l1b,mab,pe
HalfWord src_data_x4 = MEMchipl2bl1bmabpe.refer_pemem(src_x,cycle)
HalfWord src_data_y4 = MEMchipl2bl1bmabpe.refer_pemem(src_y,cycle)
ShortWord src_data_z4 = MEMchipl2bl1bmabpe.refer_pemem(src_z, cycle)
ShortWord dst_data4 = src_data_x: * src_data_y: + src_data_z:
MEMchipl2bl1bmabpe.refer_pemem(dst,cycle) = dst_data: